/*
 * Created on Mar 27, 2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package ar.edu.utn.frba.gdaia.src.junittest.GeneralizarConceptos;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import junit.framework.TestCase;
import ar.edu.utn.frba.gdaia.src.action.Command;
import ar.edu.utn.frba.gdaia.src.action.LearnRuleCommand;
import ar.edu.utn.frba.gdaia.src.domain.ConceptoElemental;
import ar.edu.utn.frba.gdaia.src.domain.Situacion;
import ar.edu.utn.frba.gdaia.src.main.GDAIA;

/**
 * @author Patricio Prueba el command LearnRule
 */
public class LearnRuleCommandTest extends TestCase {

	public static void main(String[] args) {
		junit.swingui.TestRunner.run(LearnRuleCommandTest.class);
	}

	Object assertLearnRule = null;
	Situacion situacionPrevia = null;
	Situacion situacionActual = null;
	GDAIA gdaia = null;

	Map parameters = null;

	/**
	 * Constructor for LearnRuleCommandTest.
	 * 
	 * @param arg0
	 */
	public LearnRuleCommandTest(String arg0, GDAIA gdaia, Situacion previa, Situacion actual, Object assertlearnrule) {
		super(arg0);
		this.gdaia = gdaia;
		this.assertLearnRule = assertlearnrule;
		this.situacionPrevia = previa;
		this.situacionActual = actual;
	}

	/*
	 * @see TestCase#setUp()
	 */
	protected void setUp() throws Exception {
		super.setUp();
		parameters = new HashMap();
		parameters.put(Command.CEREBRO, gdaia.getCerebro());
		
		for (Iterator iter = situacionPrevia.getEstado().iterator(); iter.hasNext();) {
			ConceptoElemental concepto = (ConceptoElemental) iter.next();
			gdaia.getCerebro().getConceptos().add(concepto);
		}
		
		for (Iterator iter = situacionActual.getEstado().iterator(); iter.hasNext();) {
			ConceptoElemental concepto = (ConceptoElemental) iter.next();
			gdaia.getCerebro().getConceptos().add(concepto);
		}
		
		gdaia.getCerebro().getSituaciones().add(situacionPrevia);
		gdaia.getCerebro().getSituaciones().add(situacionActual);
		
		gdaia.getCerebro().setSituacionPrevia(situacionPrevia);
		gdaia.getCerebro().setSituacionActual(situacionActual);
	}

	/*
	 * @see TestCase#tearDown()
	 */
	protected void tearDown() throws Exception {
		super.tearDown();
		gdaia.generateXMLForCerebro(gdaia.getCerebro());
	}

	public final void testExecute() {
		new LearnRuleCommand().execute(parameters);
		boolean ret = gdaia.getCerebro().getReglasExternas().contains(assertLearnRule);
		assertTrue(ret);
	}
}
